package com.uex.dev.manage.admin.po;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.uex.dev.manage.admin.enums.MaintainTypeEnum;
import com.uex.dev.manage.admin.typehandler.ListIntegerTypeHandler;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 问题解决及维护 同一个问题，可有多次维护记录；一次维护记录，可能解决多个问题
 * </p>
 *
 * @author wangchao
 * @since 2024-02-26
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName(value = "t_maintain", autoResultMap = true)
public class MaintainPO extends Model<MaintainPO> {

    private static final long serialVersionUID = 1L;

    /**
     * 编号
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 问题ID列表 可有多个问题ID
     */
    @TableField(typeHandler = ListIntegerTypeHandler.class)
    private List<Integer> maintainProblemIds;

    /**
     * 维护类别 硬件维护、软件维护、软硬件维护
     */
    private MaintainTypeEnum maintainType;

    /**
     * 维护描述
     */
    private String maintainDesc;

    /**
     * 维护人
     */
    private String maintainUser;

    /**
     * 维护时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime maintainTime;

    /**
     * 差旅费 以分为单位
     */
    private Integer maintainTripCost;

    /**
     * 差旅费说明
     */
    private String maintainTripNote;

    /**
     * 更换部件费 以分为单位
     */
    private Integer maintainPartCost;

    /**
     * 部件费说明
     */
    private String maintainPartNote;

    @TableLogic
    private Byte deleted;

    @Override
    public Serializable pkVal() {
        return this.id;
    }
}
